"""
声明和图片相关的工具类和方法
"""
import base64
import os

from meiduo_move_server.settings import BASE_DIR


def base64ToImg(files, **kwargs):
    """
    将图片对应的base64格式的数据转化为对应的图片，保存到静态文件目录static中的指定路径

    @param - files: 文件对象组成的数组
    @param - kwargs: 商品名、商品类别存放于该参数中，用于商品的存放路径

    @return: 图片路径组成列表
    """
    # print(files)
    goodsCategory = kwargs.get('goodsCategory')  # 获取商品类别
    goodsName = kwargs.get('goodsName')  # 获取商品名
    # 文件夹不存在时，创建文件夹
    if os.path.exists(os.path.join(BASE_DIR, 'static', goodsCategory, goodsName)) is False:
        os.makedirs(os.path.join(BASE_DIR, 'static', goodsCategory, goodsName))  # 创建文件夹
    # print(goodsCategory, goodsName)
    index = 1  # 第几张图片
    goods_picture_paths = []  # 图片路径
    for file in files:  # 遍历图片文件对象保存每个图片
        content = file.get('content')  # 获取图片文件对象中的content内容
        head, context = content.split(",")  # 获取content中的base64格式的图片数据context
        fileType, imgType = head.split('/')  # 获取图片类型
        imgType, a = imgType.split(';')
        imgdata = base64.b64decode(context)  # 解码图片
        with open(os.path.join(BASE_DIR, 'static', '%s\\%s\\%d.%s' % (goodsCategory, goodsName, index, imgType)),'wb') as f:  # 将图片保存为文件
            f.write(imgdata)
        goods_picture_paths.append('%s/%s/%d.%s' % (goodsCategory, goodsName, index, imgType))
        index += 1
    return goods_picture_paths
